package com.ruoyi.project.remoteControl.controller;

import com.alibaba.fastjson.JSONObject;
import com.ruoyi.framework.aspectj.lang.annotation.Anonymous;
import com.ruoyi.project.remoteControl.domain.SessionInfo;
import com.ruoyi.project.remoteControl.utils.SessionInfoUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 主控端通过MQTT发送发起远控和结束远控的指令，被控端完成相应操作后，通过域名调用该Controller并返回处理结果
 */
@RestController
@RequestMapping("/mqtt")
public class MqttController {
    @Autowired
    SessionInfoUtils sessionInfoUtils;

    /**
     * 接收被控端对于主控端“发起远控”操作的处理结果，并保存在SessionInfo.sessionList中
     * @param jsonObject 被控端返回的远控会话生成结果
     * @return
     */
    @Anonymous //设置该接口在系统外可以直接调用而不需要登录或者token认证
    @PostMapping("/mqttInstallResponse")
    public String mqttInstallResponse(@RequestBody JSONObject jsonObject){
        sessionInfoUtils.insertOrReplaceSessionInfo(jsonObject);
        return "会话信息发送成功！";
    }

    /**
     * 接收被控端对于主控端“结束远控”操作的处理结果，并删除SessionInfo.sessionList中相应的远控会话信息
     * @param jsonObject
     * @return
     */
    @Anonymous //设置该接口在系统外可以直接调用而不需要登录或者token认证
    @PostMapping("/mqttUninstallResponse")
    public String mqttUninstallResponse(@RequestBody JSONObject jsonObject){
        sessionInfoUtils.updateMsg(jsonObject);
        System.out.println(SessionInfo.sessionList);
//        sessionInfoUtils.deleteSessionInfo(jsonObject.getString("deviceName"));
        return "信息发送成功！";
    }
}
